import { EnumProps } from '@/components/ProTable/interface';
import { PublicType } from '@/interface/public';

interface statusProp {
  label: string;
  value: number | string;
  type?: 'option';
  tag?: PublicType['colorType'];
}

/**
 * @param {String} names 需要获取数据字典的名称 (多个以逗号隔开)
 * @description 获取数据字典内容 children 中
 */
export const getDictionaryListByCodes = async (code: string, value?: string) => {
  const str = code.split(',');

  // const data = await dictionaryListByCodes({ code });
  // if (!data) return [];
  // if (str.length === 1) {
  //   return arrTransitionSelectData(data[0]?.value, 'dicValue', value) as EnumProps[];
  // }

  // let newObj: any = {};
  // for (let item of data) {
  //   newObj[item.key] = arrTransitionSelectData(item.value, 'dicValue', value);
  // }

  // return newObj as { [key: string]: EnumProps[] };
};

/**
 * @description: 根据状态获取对应数据内容
 * @return {*}
 */
export const getStatusName = (arr: statusProp[], status: string | number) => {
  return arr.find(item => item.value + '' === status + '')?.label;
};

/**
 * @description：启用 / 禁用
 */
export const enableOrDisabledStatus: statusProp[] = [
  { label: 'enable', value: 1, tag: 'success' },
  { label: 'disabled', value: 0, tag: 'danger' }
];

/**
 * @description：提交 / 保存
 */
export const saveOrSubmitStatus: statusProp[] = [
  { label: 'save', value: 0, tag: 'warning' },
  { label: 'submit', value: 1, tag: 'success' }
];

/**
 * @description：是 | 否
 */
export const yesOrNoStatus: statusProp[] = [
  { label: '是', value: 1, type: 'option' },
  { label: '否', value: 0, type: 'option' }
];

/**
 * 操作类型
 */
export const operateTypeStatus: statusProp[] = [
  { label: '按钮', value: 'button', type: 'option' },
  { label: '查询', value: 'search', type: 'option' },
  { label: '菜单', value: 'menu', type: 'option' },
  { label: '公共菜单', value: 'menu_public', type: 'option' }
];

/**
 * 性别
 */
export const genderStatus: statusProp[] = [
  { label: '男', value: 1, type: 'option' },
  { label: '女', value: 0, type: 'option' },
  { label: '未知', value: 3, type: 'option' }
];

/**
 * 数据字典可见类型
 */
export const dictVisibleType: statusProp[] = [
  { label: '所有用户可见', value: 0, type: 'option' },
  { label: '对应角色可见', value: 1, type: 'option' }
];
